A system can include various modules and components for receiving input from a user, determining the content of the input, and generating a response to the user input. The input may be a speech input. The system can include a spoken language processing system that includes an automatic speech recognition (“ASR”) module that receives audio input of a user utterance and generates one or more likely transcriptions of the utterance. Spoken language processing systems may also include a natural language understanding (“NLU”) module that receives textual input, such as a transcription of a user utterance, and determines the meaning of the text in a way that can be acted upon, such as by a computer application. In some cases, the input may be a textual input. Therefore, the system can include a written language processing system. The written language processing system can similarly include an NLU module that receives textual input and determines the meaning of the text in a way that can be acted upon, such as by a computer application. The system can include one or both a spoken and written language processing system.
These types of systems can include an answer generator (“AG”) that processes user questions to generate relevant answers. An AG can manage interactions between a user and the system, prompt the user for information that may be required to execute various applications or perform various functions, provide response or feedback to the user, etc. For example, a user of a client device may make a spoken question asking, “Who is the President of the United States?” Audio of the spoken command can be transcribed by the ASR module, and the NLU module can determine the user's intent (e.g., that the user wants to know the identity of the president) from the transcription. The answer generator may then generate an answer to the user's question.
Generating answers to a wide variety of types of questions requires accurate and useful information. A wide variety of information sources and other ways to locate information of various types have been developed. However, such techniques are often time-consuming and/or expensive to use. In addition, such techniques can also suffer from other problems, such as providing only limited types of information, providing information that is inaccurate and/or irrelevant, etc. For example, encyclopedias and reference librarians may provide one possible source of answers, but using such sources can be time-consuming and expensive. In addition, such sources are limited in the types of information to which they have access, such as to historical information. Similarly, while online search engines can provide an abundance of information, they often provide information that is inaccurate or irrelevant, are difficult or impossible for many users to effectively use, and can be limited when retrieving various types of information. For example, such information sources may be ineffective in providing answers to many topical and special-interest questions, such as a list of restaurants of a particular type in a given geographic location that have provided great service during the prior month, suggestions on how best to use particular features on a newly released mobile phone, or an identification of a physical store in a geographical area that currently have a particular item in stock at a price that satisfies specified criteria. A system may instead develop and use its own semantic network that includes organized information taken from a variety of data sources. The answer generator may use the semantic network to generate an answer for the user in response to the user's question. This semantic network may be or include a knowledge base. Such a knowledge base may include facts or entries. However, it may still be difficult and time-consuming for a system to determine the answer to a previously unasked question or question without additional training.